﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpReview
{
    //1、猫、狗、鸭、猴，（吃、游泳、爬树）
    //所有动物都有吃的方法
    //狗和鸭会游泳，不会爬树
    //猫和猴不会游泳会爬树
    //将吃的方法定义在父类方法中，将游泳和爬树的技能定义为接口
    //所有子类继承父类后，再去继承相应的接口实现技能
    class Animals
    {
        public string animal;

        public Animals(string animal)
        {
            this.animal = animal;
        }

        public void Eat()
        {
            Console.WriteLine($"{animal}张开嘴\n{animal}进食中……");
        }
    }

    class Cat : Animals, IClimb
    {
        public Cat(string animal = "猫") : base(animal) { }

        public void Climb()
        {
            Console.WriteLine($"{animal}上树。\n");
        }
    }

    class Dog : Animals, ISwim
    {
        public Dog(string animal = "狗") : base(animal) { }

        public void Swim()
        {
            Console.WriteLine($"{animal}刨。\n");
        }
    }

    class Duck : Animals, ISwim
    {
        public Duck(string animal = "鸭") : base(animal) { }

        public void Swim()
        {
            Console.WriteLine($"{animal}划水。\n");
        }
    }

    class Monkey : Animals, IClimb
    {
        public Monkey(string animal = "猴") : base(animal) { }

        public void Climb()
        {
            Console.WriteLine($"{animal}爬树。\n");
        }
    }
}
